#include <iostream>
#include <unistd.h>
#include <sys/msg.h>
#include "../macro.h"
#include <string.h>

using std::cout;
using std::endl;

struct Buf{
    long mtype;     // 消息类型，必须为long类型，因为底层是直接读取 sizeof(long) 大小字节的数据
    char buf[64];   // 消息大小
};

int main(int args, char *argv[])
{
    ARGS_CEHCK(args, 3) 
    int msgid = msgget(1000, IPC_CREAT | 0600);
    ERR_CHECK(msgid, -1, "msgget") 

    struct Buf buf {0};
    buf.mtype = atoi(argv[1]);
    strcpy(buf.buf, argv[2]);

    // 大小为消息的大小，并非是结构体的大小
    int ret = msgsnd(msgid, &buf, strlen(buf.buf), 0);
    ERR_CHECK(ret, -1, "msgsnd")
    return 0;
}